package com.zxh.utils;

import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;
import java.util.UUID;

/**
 * 文件上传工具类
 */
public class FileUtil {

    /**
     * 保存文件
     * @param session 会话对象
     * @param multipartFile 上传的文件
     * @return 最终存储的文件名
     * @throws IOException
     */
    public static String saveFile(HttpSession session, MultipartFile multipartFile) throws IOException {
        //判断文件内容是否为空，为空时直接返回
        if(multipartFile == null || multipartFile.isEmpty()){
            return null;
        }

        //获取项目部署的路径（服务器路径）
        String path = session.getServletContext().getRealPath("/upload");

        //文件夹若不存在，则创建，避免存储时异常
        File pathFile = new File(path);
        if(!pathFile.exists()){
            pathFile.mkdir();
        }

        //获取上传的原文件名-包含后缀 123.jpg
        String originalFilename = multipartFile.getOriginalFilename();
        //截取文件名后缀
        String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
        //生成文件名前缀
        String prefix = UUID.randomUUID().toString();

        //最终存储的文件名
        String fileName = prefix+suffix;

        //创建文件对象，指向一个文件
        File file = new File(path+"/"+fileName);

        //将上传的文件存储到指定的File中
        multipartFile.transferTo(file);

        return fileName;
    }
}
